#include "game_util/post_fun.h"
#include "log_def.h"

void su::PostFunMgr::Post(PostFun f)
{
	m_vec.push_back(f);
	if (!m_timer.IsTiming())
	{
		m_timer.StartMs(1, std::bind(&PostFunMgr::Excute, this));
	}
}

void su::PostFunMgr::Excute()
{
	m_tmpVec.swap(m_vec); //复制，天知道回调函数会不会修改 m_vec！
	for (PostFun &v : m_tmpVec)
	{
		v();
	}
	m_tmpVec.clear();
	if (!m_vec.empty()) //上面回调函数又加入任务
	{
		L_COND_V(m_timer.IsTiming());
	}
	
}
